package net.sk.china.city.service;

import net.sk.china.city.constant.HotActivityOrderKey;
import net.sk.china.city.domain.ArSupermarketProduct;
import net.sk.china.city.domain.ArTeam;
import net.sk.china.city.domain.dto.PageData;
import net.sk.china.city.domain.dto.WorkHourPageData;
import net.sk.china.city.domain.dto.activity.ActivityInfoDTO;
import net.sk.china.city.domain.dto.analyse.*;
import net.sk.china.city.domain.vo.*;

import java.util.List;

public interface IAnalyseService {
    AnalyseDTO analyseVolunteerData();

    /**
     * 捐赠排行榜
     */
    List<DonationRankVO> donationRank();

    /**
     * 慈善超市销量前五商品
     * @return
     */
    List<ArSupermarketProduct> SupermarketRank();

    /**
     * 报道占比
     * @return
     */
    List<ReportProportionVO> ReportProportion();

    //志愿者人员分布
    List<VolunteerPopulationVO> volunteerPopulation();

    List<ActivityRankDTO> analyseHotActivity(HotActivityOrderKey key);

    List<VolunteerCountRankDTO> analyseSiteVolunteerTop5(VolunteerCountRankSearchDTO volunteerCountRankSearchDTO);

    List<SitePin> siteList();

    List<GridIdNamePair> gridPair(Long communityId);

    GridAnalysis gridAnalysis(Long gridId);

    PageData<GridVolunteerItem> gridVolunteerPage(GridVolunteerPageSearchDTO gridVolunteerPageSearchDTO);

    int generateClosure();

    List<RegionPoint> thisRegionLeveList(Long reginId);

    List<RegionPoint> gridLeveList(Long townRegionId);

    List<RegionPoint> countyLevelCellList(Long countyId);

    void mergeLeafNode();

    SupermarketHomeVO getSupermarketHome();

    List<SupermarketProductVO> getHotExchangeProductList();

    /**
     * 获取最新兑换订单
     * @return
     */
    List<ArExchangeVO> getLastExchange();

    /**
     * 获取捐赠来源占比
     * @return
     */
    List<Integer> getDonateSourcePercent();

    /**
     * 获取义购之家基础数据
     * @return
     */
    HomeInfoVO getHomeInfo();

    /**
     * 获取热门商品排行（10条）
     * @return
     */
    List<HomeProductInfoVO> popularProductRanking();

    /**
     * 订单（义购）
     * @return
     */
    List<LatestOrdersVO> latestOrders(String orderStatusList);

    /**
     * 退款订单数量今日本周本月
     * @return
     */
    List<Integer> getRefundOrderNums();

    PageData<ArTeam> getTeamList(int current, int size);

    PageData<ActivityInfoDTO> activityPage(int current, int size);

    WorkHourPageData<WorkHourItem> workHourDataPage(int current, int size);

    PageData<GridVolunteerItem> serviceSiteVolunteer(Long siteId, int current, int size);

    PageData<GridVolunteerItem> getVolunteerUnderCell(Long gridId, int current, int size);
}
